package com.spzx.product.controller;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.TableInfo;
import com.github.pagehelper.PageHelper;
import com.spzx.domain.Brand;
import com.spzx.product.service.IBrandService;
import com.spzx.vo.Result;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.List;

import static com.github.pagehelper.page.PageMethod.startPage;

@Tag(name = "品牌管理接口")
@RestController
@RequestMapping("/brand")
public class BrandController  {
@Autowired
    private IBrandService brandService;

    /**
     * 查询品牌列表
     * @param pageNum
     * @param pageSize
     * @return
     */
    @Operation(summary = "查询品牌列表")
@GetMapping("list/{pageNum}/{pageSize}")
    public TableInfo list(@PathVariable("pageNum")Integer pageNum,@PathVariable("pageSize") Integer pageSize){
        PageHelper.startPage(pageNum,pageSize);
    List<Brand> brandList = brandService.list(pageNum, pageSize);

    return (TableInfo) brandList;
}
    /**
     * 新增品牌接口
     * 通过HTTP POST请求接收一个品牌对象，并将其添加到系统中
     *
     * @param brand 经过请求体传输且通过校验的品牌对象，包含品牌相关信息
     * @return 返回一个Result对象，包含品牌信息和状态码200，以及操作提示信息"新增成功"
     */
    @Operation(summary = "新增品牌")
    @PostMapping("add")
    public Result add(@RequestBody @Validated Brand brand){
        return Result.build(brand, 200, "新增成功");
    }

    /**
     * 删除品牌接口
     * @param id  商品id
     * @return  影响行数
     */
    @Operation(summary = "删除品牌")
    @DeleteMapping("/delete/{id}")
    public Result delete(@PathVariable("id") Long id){
        brandService.delete(id);
        return Result.build(null,200,"删除成功");
    }
    /**
     * 修改品牌接口
     * @param brand  商品id
     * @return  影响行数
     */
    @Operation(summary = "修改品牌")
    @PutMapping("updateBrand")
    public Result updateBrand(@RequestBody @Validated Brand brand){
        brandService.updateBrand(brand);
        return Result.build(null,200,"修改成功");
    }
    @Operation(summary = "根据id查询品牌")
    @GetMapping("/selectBrandById/{id}")
    public Result<Brand> selectBrandById(@PathVariable("id") Long id){
        return Result.build(brandService.selectBrandById(id),200,"查询成功");
    }

}
